Skip to main content

SDK de extensión

Con Extension SDK, puede implementar sus propias funciones en C y llamarlas desde la aplicación IEC.

Para esta conexión, el código C se integra en el sistema de tiempo de ejecución en forma de un componente dinámico separado (shared object).

Hay dos formas de incluir:

  • Preparado en el controlador: el componente dinámico ya está configurado para el CODESYS sistema de tiempo de ejecución (un shared object existe y está configurado en el sistema Linux). Entonces, solo se requiere la biblioteca IEC respectiva.

  • En forma de biblioteca IEC con un componente dinámico integrado. No es necesario preparar nada en el propio sistema Linux. Al utilizar la biblioteca IEC, el componente dinámico se agrega automáticamente a la CODESYS sistema de tiempo de ejecución y utilizado.

En ambos casos, el usuario tiene que ser capaz de crear un shared object que es adecuado para la arquitectura del sistema de tiempo de ejecución (x64/ARM6/ARM7/AARCH64). El SDK de extensión lo ayuda a crear este tipo de componente dinámico (shared object).

A continuación se describe cómo crear la biblioteca y el componente dinámico para ambas variantes.

Entorno de desarrollo

. Entorno de desarrollo
  • Abierto CODESYS y crear una nueva biblioteca.

  • Establecer el título de la biblioteca (Información del proyecto, Resumen tab) y guarde la biblioteca con el mismo nombre.

  • Agregue las funciones deseadas y márquelas como Implementación externa.

    • En el menú contextual de la función en el navegador de proyectos, haga clic en Propiedades. Sobre el Construir pestaña, seleccione Implementación externa.

    • Nota: La función debe contener "_cext" en el nombre.

  • Ahora genera los archivos *c y *m4:

    • Hacer clic Construir → Generar archivos de sistema de tiempo de ejecución.

    • Seleccione Archivo de interfaz M4 y archivo auxiliar C.

    • Seleccione la ubicación de guardado.

linux

  1. Copie el SDK de extensión en un sistema Linux que tenga el entorno de compilación correspondiente para el sistema de destino.

    De forma predeterminada, encontrará el SDK de extensión en:

    C:\Program Files\CODESYS <version>\CODESYS\CODESYS Control SL Extension Package\<version>\ExtensionSDK. En los siguientes pasos nos referiremos al directorio como <SDK DIR>.

  2. Cree una nueva carpeta donde cree la implementación de C. Esta carpeta está en la siguiente <PROJECT DIR>.

  3. Navegar a <PROJECT DIR> y correr: $ make -f <SDKDIR>/makefile newproject

  4. Copie los archivos *c y *m4 que creó en el entorno de desarrollo para <PROJECT DIR>.

  5. Implementar las funciones en C.

  6. Crea el objeto compartido: $ make all

    El shared object se genera y se ubica en <PROJECT DIR>/out/libCmpMyTest.so.

Como resultado, ha creado un componente dinámico que ahora se puede llamar desde la aplicación IEC a través de su biblioteca IEC. Detalles sobre el proceso de compilación (make) también se puede encontrar en los archivos MAKE y README file en el SDK de extensión.

Ahora decida una de las dos formas siguientes de incluir el componente:

Incluido el componente dinámico

Dispone de las siguientes opciones para incluir el componente:

Incluir el componente dinámico en el dispositivo de destino

Este método le permite incluir el objeto compartido creado previamente en C en el sistema de tiempo de ejecución. No se requieren permisos de sistema adicionales para el usuario y la biblioteca se puede implementar en los dispositivos utilizando métodos familiares.

  1. Copie el objeto compartido creado anteriormente en el sistema de tiempo de ejecución.

  2. Copie el objeto compartido en /usr/lib/ o un directorio de biblioteca equivalente donde el sistema encuentra las bibliotecas.

  3. Detenga el sistema de tiempo de ejecución (ejemplo: $ sudo /etc/init.d/codesyscontrol stop)

  4. Abierto /etc/CODESYSControl_User.cfg con permisos de administrador: $ sudo nano /etc/CODESYSControl_User.cfg

  5. En el [ComponentManager] sección, agregue los objetos compartidos creados:

    [ComponentManager]
    Component.1=CmpFirstTest
    Component.2=CmpSomeOtherComponent
    ...

    Nota: El número es un número incremental que no debe entrar en conflicto con los componentes existentes.

  6. Inicie el sistema de tiempo de ejecución: $ sudo /etc/init.d/codesyscontrol start

    Ahora puede comprobar si el componente se ha cargado: $ cat /tmp/codesyscontrol.log

Incluyendo el componente dinámico en la biblioteca IEC

Agregue el componente dinámico a la biblioteca IEC utilizando la funcionalidad "Integración de código C". Para más información, ver Integración de código C en la ayuda general.

  1. Abra la biblioteca IEC.

  2. En POU, Agrega un Biblioteca implementada en C objeto.

  3. En este objeto, agregue un Archivo de objeto para dispositivos:

    • Seleccione el componente dinámico (archivo) creado previamente y agréguelo.

    • Especifique un nombre de componente adecuado.

    • Seleccione el dispositivo adecuado.

    Ahora, al usar esta biblioteca con el dispositivo seleccionado, el componente dinámico se agrega automáticamente al sistema de tiempo de ejecución y se puede llamar usando las POU de la biblioteca.

Otro

Restricciones:

  • Con el SDK de extensión, solo se puede incluir el código C.

  • No se puede usar un depurador para examinar o depurar el código C (por ejemplo, como en el sistema de programación).

  • El código C no puede "interactuar" con el sistema de tiempo de ejecución o la aplicación IEC. Esto significa:

    • No es posible el acceso automático a las variables de la aplicación IEC.

    • El acceso a la funcionalidad del sistema runtime no es posible. Sin embargo, el acceso a las variables de la aplicación IEC es, por supuesto, posible pasándolas a una función implementada en código C. by reference (por ejemplo, a través de POINTER).

Uso de la interfaz solo como miembro de Linux codesysuser grupo de usuario

No

Separación de procesos

No